package admincow.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import com.sun.org.apache.bcel.internal.generic.Select;

import admincow.util.ConexionBD;
import admincow.vo.EventoVO;
import admincow.vo.FotoVO;
import admincow.vo.FuncionVO;
import admincow.vo.UsuarioVO;

public class FotoDAO {
	// inicio
	public Collection<FotoVO> obtenerPorRPAnimal(String animal,String rpanimal) {
		System.out.println("Begin on page Buscar por RPANIMAL");
		Collection<FotoVO> c = new ArrayList<FotoVO>();
		System.out.println(animal);
			int vacuno;
			if(animal.equals("B")){
				vacuno=0;
			}else if(animal.equals("V")){
					vacuno=1;
			}else if(animal.equals("T")){
						vacuno=2;
			}else{
				vacuno=3;
			}
			
			System.out.println(vacuno);
			switch(vacuno){
			case 0: 
				try {
					Connection con = ConexionBD.obtenerConexion();
					Statement stmt = con.createStatement();
					ResultSet rs = stmt.executeQuery("select idfoto,RPbecerro,ruta_archivo from foto where RPbecerro like '%" + rpanimal + "%'");
					System.out.println("come here Becerro");
					
					while (rs.next()) {
						FotoVO vo = new FotoVO();
						vo.setIdfoto(rs.getInt("idfoto"));
						vo.setRPbecerro(rs.getString("RPbecerro"));
						//vo.setRPvaca(rs.getString("RPvaca"));
						//vo.setRPtoro(rs.getString("RPtoro"));
						vo.setRuta_archivo(rs.getString("ruta_archivo"));
						c.add(vo);
					}
		    		rs.close();
					stmt.close();
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				break;
				
			case 1:
				try {
					Connection con = ConexionBD.obtenerConexion();
					Statement stmt = con.createStatement();
					ResultSet rs = stmt.executeQuery("select idfoto,RPvaca,ruta_archivo from foto where RPvaca like '%" + rpanimal + "%'");
					System.out.println("come here Vaca");
		
					while (rs.next()) {
						FotoVO vo = new FotoVO();
						vo.setIdfoto(rs.getInt("idfoto"));
						//vo.setRPbecerro(rs.getString("RPbecerro"));
						vo.setRPvaca(rs.getString("RPvaca"));
						//vo.setRPtoro(rs.getString("RPtoro"));
						vo.setRuta_archivo(rs.getString("ruta_archivo"));
						c.add(vo);
					}
					rs.close();
					stmt.close();
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				break;
			case 2:
				try {
					Connection con = ConexionBD.obtenerConexion();
					Statement stmt = con.createStatement();
					ResultSet rs = stmt.executeQuery("select idfoto,RPtoro,ruta_archivo from foto where RPtoro like '%" + rpanimal + "%'");
					System.out.println("come here Toro");
					
					while (rs.next()) {
						FotoVO vo = new FotoVO();
						vo.setIdfoto(rs.getInt("idfoto"));
						//vo.setRPbecerro(rs.getString("RPbecerro"));
						//vo.setRPvaca(rs.getString("RPvaca"));
						vo.setRPtoro(rs.getString("RPtoro"));
						vo.setRuta_archivo(rs.getString("ruta_archivo"));
						c.add(vo);						
					}
					rs.close();
					stmt.close();
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				break;
		default: System.out.println("opcion invalida");
			try {
				Connection con = ConexionBD.obtenerConexion();
				Statement stmt = con.createStatement();
				ResultSet rs = stmt.executeQuery("select idfoto,RPbecerro,RPvaca,RPtoro,ruta_archivo from foto where idfoto>0");
				System.out.println("default");
				
				while (rs.next()) {
					FotoVO vo = new FotoVO();
					vo.setIdfoto(rs.getInt("idfoto"));
					vo.setRPbecerro(rs.getString("RPbecerro"));
					vo.setRPvaca(rs.getString("RPvaca"));
					vo.setRPtoro(rs.getString("RPtoro"));
					vo.setRuta_archivo(rs.getString("ruta_archivo"));
					c.add(vo);
				}
	    		rs.close();
				stmt.close();
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
				}
		return c;
	}
	
	public FotoVO obtenerAnimalPorId(int idfoto){
		FotoVO vo= new FotoVO();
		try {
			String query="select foto.* from foto where idfoto=?";
			Connection con= ConexionBD.obtenerConexion();
			PreparedStatement stmt=con.prepareStatement(query);
			stmt.setInt(1, idfoto);
			ResultSet rs= stmt.executeQuery();
			if(rs.next()){
				vo.setIdfoto(rs.getInt("idfoto"));
				vo.setRPbecerro(rs.getString("RPbecerro"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setRuta_archivo(rs.getString("ruta_archivo"));			
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			//  TODO: handle exception
			e.printStackTrace();
		}		
		return vo;
	}

	public FotoVO insertar(FotoVO vo) {
		System.out.println("Ingresando al insetar usuario");
		String query = "insert into foto(idfoto,RPbecerro,RPvaca,RPtoro,ruta_archivo) values ( ?,?,?,?,?)";
		System.out.println(query);
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setInt(1, vo.getIdfoto());
			stmt.setString(2, vo.getRPbecerro());
			stmt.setString(3, vo.getRPvaca());
			stmt.setString(4, vo.getRPtoro());
			stmt.setString(5, vo.getRuta_archivo());
									
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	public FotoVO actualizar(FotoVO vo) {
		System.out.println("Ingresando al actualizar foto");
		String query = "update foto set RPbecerro=?,RPvaca=?,RPtoro=?,ruta_archivo=? where idfoto=?";
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			
			stmt.setString(1, vo.getRPbecerro());
			stmt.setString(2, vo.getRPvaca());
			stmt.setString(3, vo.getRPtoro());
			stmt.setString(4, vo.getRuta_archivo());
			stmt.setInt(5, vo.getIdfoto());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}

			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}

	public void eliminar(int idfoto) {
		String query = "DELETE FROM foto WHERE idfoto=?";
		
		try {
			Connection con = ConexionBD.obtenerConexion();
			PreparedStatement stmt = con.prepareStatement(query);
			stmt.setInt(1, idfoto);
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo eliminar usuario");
			}
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		}

	public Collection<FotoVO> listarTodos() {
		Collection<FotoVO> c = new ArrayList<FotoVO>();
		try {
			Connection con = ConexionBD.obtenerConexion();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt
					.executeQuery("SELECT a.idusuario,a.password,a.nombres,a.paterno,a.materno,a.correo,a.direccion,a.telefono,a.estado,b.idusuario,b.nom_fun FROM usuario a INNER JOIN usuario_funcion b ON a.idusuario = b.idusuario");
			while (rs.next()) {
				FotoVO vo = new FotoVO();
				vo.setIdfoto(rs.getInt("idfoto"));
				vo.setRPbecerro(rs.getString("RPbecerro"));
				vo.setRPvaca(rs.getString("RPvaca"));
				vo.setRPtoro(rs.getString("RPtoro"));
				vo.setRuta_archivo(rs.getString("ruta_archivo"));
				c.add(vo);
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return c;
	}
	// final
}
